package com.eke.serviceimpl;

import java.util.List;

import javax.annotation.Resource;
import org.springframework.stereotype.Service;

import com.eke.bean.Course;
import com.eke.bean.CourseType;
import com.eke.bean.Sign_up;
import com.eke.dao.CourseDao;
import com.eke.dao.CourseTypeDao;
import com.eke.dao.SignUpDao;
import com.eke.service.CourseSevice;

@Service
public class CourseServiceImpl implements CourseSevice {
	@Resource
	private CourseDao courseDao;

	@Resource
	private CourseTypeDao courseTypeDao;

	@Resource
	private SignUpDao signUpDao;
	/**
	 * 查询推荐课程
	 * 
	 * @return List<{@link Course}> 返回课程集合
	 */
	
	public List<Course> queryRecommendCourses() {
		// TODO Auto-generated method stub
		return courseDao.queryRecommendCourses();
	}

	/**
	 * 查询四个大课程分类
	 * 
	 * @return List<{@link CourseType}>返回课程分类集合
	 */
	
	public List<CourseType> queryFourBigCourseType() {
		// TODO Auto-generated method stub
		return courseTypeDao.queryFourCourseType();
	}

	/**
	 * 通过课程分类id查询课程
	 * 
	 * @return List<{@link Course}> 返回课程集合
	 */
	
	public List<Course> queryRecommendCourseByCourseTypeId(Integer courseTypeId) {
		// TODO Auto-generated method stub
		return courseDao.queryRecommendByCourseTypeId(courseTypeId);
	}

	/**
	 * 查询所有一级分类
	 * 
	 * @return List<{@link CourseType}>返回课程分类集合
	 */
	
	public List<CourseType> queryAllBigCourseType() {
		// TODO Auto-generated method stub
		return courseTypeDao.queryAllBigCourseType();
	}

	/**
	 * 查询所有二级分类byId
	 * 
	 * @param course_sub_type_id
	 *            课程子分类id
	 * @return {@link List}<{@link CourseType}>返回课程分类集合
	 */
	
	public List<CourseType> queryAllTwoCourseType(Integer course_sub_type_id) {
		// TODO Auto-generated method stub
		return courseTypeDao.queryAllTwoCoureType(course_sub_type_id);
	}

	/**
	 * 查询所有三级分类
	 * 
	 * @return {@link List}<{@link CourseType}>返回课程分类集合
	 */
	
	public List<CourseType> queryAllThreeCourseType() {
		// TODO Auto-generated method stub
		return courseTypeDao.queryAllThreeCourseType();
	}

	/**
	 * 查询所有二级分类
	 * 
	 * @return {@link List}<{@link CourseType}>返回课程分类集合
	 */
	
	public List<CourseType> queryAllTwoCourseType() {
		// TODO Auto-generated method stub
		return courseTypeDao.queryAllTwoCoureType();
	}

	/**
	 * 根据课程分类id查询课程信息
	 * 
	 * @return {@link List}<{@link Course}> 返回课程集合
	 */
	
	public List<Course> queryCourseById(Integer courseId, int startRow, int pageSize) {
		// TODO Auto-generated method stub
		return courseDao.queryCourseById(courseId, startRow, pageSize);
	}

	/**
	 * 分页查询所有课程分类id为？的课程总数
	 * 
	 * @return int
	 */
	
	public int queryCourseTotal(Integer courseTypeId) {
		// TODO Auto-generated method stub
		return courseDao.queryCourseTotal(courseTypeId);
	}

	/**
	 * 分页查询课程信息
	 * 
	 * @param startRow
	 *            开始页
	 * @param pageSize
	 *            数量
	 * @return {@link List}<{@link Course}> 返回课程集合
	 */
	
	public List<Course> queryAllCourse(int startRow, int pageSize) {
		// TODO Auto-generated method stub
		return courseDao.querAllyCourse(startRow, pageSize);
	}

	/**
	 * 查询课程总数
	 * 
	 * @return int
	 */
	
	public int queryCourseTotal() {
		// TODO Auto-generated method stub
		return courseDao.queryCourseTotal();
	}

	/**
	 * 通过课程名查询课程
	 * 
	 * @return {@link List}<{@link Course}> 返回课程集合
	 */
	
	public List<Course> queryCourseByCourseName(String courseName) {
		return courseDao.queryCourseByCourseName(courseName);
	}

	/**
	 * 根据课程id查询课程信息
	 * 
	 * @param courseId
	 * @return {@link List}<{@link Course}> 返回课程集合
	 */
	
	public Course queryCourseDeatilsById(Integer courseId) {
		// TODO Auto-generated method stub
		return courseDao.queryCourseDeatilsById(courseId);
	}

	/**
	 * 添加课程
	 * 
	 * @param {@link
	 * 			Course}
	 * @return {@link Boolean} 添加成功返回true失败返回false
	 */
	
	public Boolean insertCourse(Course course) {
		// TODO Auto-generated method stub
		return courseDao.insertCourse(course) > 0;
	}

	/**
	 * 根据用户id查询课程总数
	 * 
	 * @return int
	 */
	public int queryCourseTotalByUserId(int userId) {
		return courseDao.queryCourseTotalByUserId(userId);
	}

	/**
	 * 根据用户id查询课程
	 * 
	 * @return {@link List}<{@link Course}> 返回课程集合
	 */
	public List<Course> queryCourseByUserId(Integer userId, int startRow, Integer pageSize) {
		return courseDao.queryCourseByUserId(userId, startRow, pageSize);
	}

	/**
	 * 报名课程
	 * @param entry
	 * 		entry
	 * @return {@link Boolean}
	 */
	
	public boolean signCourse(Sign_up sign_up) {
		// TODO Auto-generated method stub
		return signUpDao.signCourse(sign_up) >0;
	}

	/**
	 * 判断是否可以报名
	 */
	
	public boolean isSignUp(Integer userId, Integer courseId) {
		// TODO Auto-generated method stub
		return signUpDao.isSignUp(userId, courseId);
	}

}
